URPで画像を描画するだけのシェーダー
これからはURPがメインになるのでHLSLのお作法になれるためにもまずは基本から学ぼうと思います
Shader "Custom/Simple"
{
Properties
{
_MainTex ("Main Tex", 2D) = "while" {}
}
SubShader
{
Tags
{
// 透明度指定
"RenderType" = "Transparent"
"RenderPipeline" = "UniversalPipeline"
"IgnoreProjector" = "True"
"Queue" = "Transparent"
}
// アルファブレンド指定
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
HLSLPROGRAM // HLSLからはこれで囲むようになった
// 頂点&フラグメントシェーダー指定
#pragma vertex vert
#pragma fragment flag
// HLSLのマクロやメソッドの読み込み
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
struct Attributes
{
float4 positionOS : POSITION;
float2 uv : TEXCOORD0; // テクスチャ座標
};
struct Varyings
{
float4 positionHCS : SV_POSITION;
float2 uv : TEXCOORD0; // テクスチャ座標
};
sampler2D _MainTex;
// 頂点シェーダー
Varyings vert(Attributes IN)
{
Varyings o;
o.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);
o.uv = IN.uv;
return o;
}
// フラグメントシェーダー
half4 flag(Varyings IN) : SV_Target
{
// 保管されたUV座標でテクスチャから色を得る
return tex2D(_MainTex, IN.uv);
}
// 終了
ENDHLSL
}
}
}
ユニティちゃんを読み込ませたあと、RawImageにアタッチ。 Shader作成して上記をコピペしてマテリアルに指したあと、上記のRawImageに入れれば描画されます
とりあえずこれで問題なくテクスチャが描画されるようになりました ��ました